package dialect

import (
	"text/template"

	"gorm.io/gorm"

	"code_gen/config"
)

// Context 上下文
type Context struct {
	m           map[string]interface{} // 上下文
	Ds          *config.DataSource     // 数据源
	FileSaver   FileSaver              // 文件保存器
	Dialect     Dialect                // 方言
	Db          *gorm.DB               // 数据库连接
	Tpl         *config.Template       // 模板配置
	TplVar      map[string]interface{} // 模板变量
	TplExecutor *template.Template     // 模板执行器
	Ext         map[string]interface{} // 扩展
	Prj         *config.ProjectConfig  // 项目
}

func NewContext() *Context {
	return &Context{
		m: map[string]interface{}{},
	}
}

func (c *Context) Set(key string, value interface{}) interface{} {
	c.m[key] = value
	return ""
}

func (c *Context) Get(key string) interface{} {
	return c.m[key]
}
